define(['jquery', 'bootstrap', 'backend', 'table', 'form','fast'], function ($, undefined, Backend, Table, Form,Fast) {

    var Controller = {
        index: function () {
            // 初始化表格参数配置
            Table.api.init({
                extend: {
                    index_url: 'wechat/index',
                    add_url: 'wechat/add',
                    edit_url: 'wechat/edit',
                    del_url: 'wechat/del',
                }
            });
            var table = $("#table");

            // 初始化表格
            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                columns: [
                    [
                        {field: 'id', title: 'ID'},
                        {field: 'wxname', title: __('名称'),align:'left'},
                        {field: 'appid', title: __('App ID'),align:'left',operate:false},
                        {field: 'appsecret', title: __('App Secret'), operate:false,align:'left'},
                        {field: 'type', title: __("类型"),operate:false, searchList: {"1":__('订阅号'),"3":__('服务号')}, formatter: Table.api.formatter.status},
                        {field: 'contact', title: __('联络人'), operate:false,align:'left'},
                        {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: function (value, row, index) {
                           
                            return Table.api.formatter.operate.call(this, value, row, index);
                        }}
                    ]
                ]
            });

            // 为表格绑定事件
            Table.api.bindevent(table);
        },
        add: function () {
            Form.api.bindevent($("form[role=form]"));
        },
        edit: function () {
            Form.api.bindevent($("form[role=form]"));
        },
        synch:function(){
            Form.api.bindevent($("form[role=form]"));
        },
        menu:function(){
            $("body").on("click",".nume-action",function(){
                var _this = $(this);
                if(_this.hasClass("disabled")){
                    return false;
                }
                _this.addClass("disabled");
                var aid = _this.data('aid');
                var pid = _this.data('pid');
                $(".nume-action").find("a").removeClass("nume-active");
                var index = Layer.load(1);
                $.post("wechat/addweixinmenu",{id:aid,pid:pid},function(res){
                    _this.removeClass("disabled")
                    Layer.close(index);
                    if(res.code != 1){
                        Fast.events.onAjaxError({msg:res.msg,code:0});
                    }else{
                        if(pid == 0){ //一级菜单
                            /*添加*/
                            if(aid == 0){
                               var items = $(".pre_menu_list").find(".nume-action").length;
                                if(items == 1){
                                    $(".pre_menu_list").find(".menu_item").removeClass('size1of1');
                                    $(".pre_menu_list").find(".menu_item").addClass('size1of2');
                                    _this.before("<li class='menu_item size1of2 nume-action' data-pid='0' data-aid='"+res.data.menu_id+"'><a class='pre_menu_link nume-active'>"+res.data.menu_name+"</a></li>")
                                }
                                if(items == 2){
                                    $(".pre_menu_list").find(".menu_item").removeClass('size1of2');
                                    $(".pre_menu_list").find(".menu_item").addClass('size1of3');
                                    _this.before("<li class='menu_item size1of3 nume-action' data-pid='0' data-aid='"+res.data.menu_id+"'><a class='pre_menu_link nume-active'>"+res.data.menu_name+"</a></li>")
                                }
                                if(items == 3){
                                    $(".pre_menu_list").find(".menu_item").removeClass('size1of2');
                                    $(".pre_menu_list").find(".menu_item").addClass('size1of3');
                                    _this.before("<li class='menu_item size1of3 nume-action' data-pid='0' data-aid='"+res.data.menu_id+"'><a class='pre_menu_link nume-active'>"+res.data.menu_name+"</a></li>")
                                    _this.remove();
                                } 
                            }else{
                                _this.children("a:first").addClass("nume-active");
                            }
                            $(".sub_pre_menu_box").addClass("hide");
                            _this.find(".sub_pre_menu_box").removeClass("hide");
                        }else{ //二级菜单
                            if(aid == 0){ /*添加*/
                                
                                var html = '<li class="jsSubMenu nume-action" data-aid="'+res.data.menu_id+'" data-pid="'+res.data.pid+'" style="">';
                                    html += '<a href="javascript:void(0);" class="nume-active" >';
                                    html += '<span class="sub_pre_menu_inner">'+res.data.menu_name+'</span></a></li>';
                                _this.before(html)
                                var items = _this.parents(".sub_pre_menu_box").find(".jsSubMenu").length;
                                if(items > 5){
                                    _this.remove();
                                }
                            }else{
                                _this.find("a").addClass("nume-active");
                            }
                        }
                        $("input[value='"+res.data.menu_event_type+"']").prop('checked',true);
                        $("input[name='menu_event_type']:checked").click();
                        $("#_menu_id").val(res.data.menu_id);
                        $("#field-menu-name").val(res.data.menu_name)
                        $("#menu_event_url").val(res.data.menu_event_url);
                        $("#wx-name-label").text(res.data.menu_name);
                        $("#_delNume").data('action',$("#_delNume").data('href')+"?menu_id="+res.data.menu_id)
                        $(".submit-ajaxs").removeClass('disabled');
                        var options = res.data.options;
                        if(res.data.menu_event_type == 2 && options != undefined ){
                            $("input[value='"+options.type+"']").prop('checked',true);
                            $("._content").hide();
                            $(".content-"+options.type).show();
                            if(options.type == 'text'){
                                $('.simple-editor').summernote('code',options.content);
                            }else if(options.type == 'image'){
                                $("#c-image").val(options.image).trigger("change").trigger("validate");
                                $("#_media_id").val(options.media_id);
                            }else if(options.type == 'mpnews'){
                                $(".content-mpnews").html(res.data.html);
                            }
                        }
                        if(res.data.menu_event_type == 3 && options != undefined ){
                            $("#_appid").val(options.appid);
                            $("#_path").val(options.path);
                            $("#_url").val(options.url);
                        }
                    }

                })
                return false;
            })
            //二级菜单添加
            $("body").on("click",".sub_menu",function(){
                var _this = $(this);
                if(_this.hasClass("disabled")){
                    return false;
                }
                _this.addClass("disabled");
                var aid = _this.data('aid');
                var pid = _this.data("pid");
                $(".pre_menu_list").find("a").removeClass("nume-active");
                var index = Layer.load(1);
                $.post("wechat/addweixinmenu",{id:aid,pid:pid},function(res){
                    _this.removeClass("disabled");
                    Layer.close(index);
                    if(res.code != 1){
                        Fast.events.onAjaxError({msg:res.msg,code:0});
                        return false;
                    }
                    if(aid == 0){ /*添加*/
                        var items = _this.parents(".sub_pre_menu_box").find(".jsSubMenu").length;
                        var html = '<li class="jsSubMenu sub_menu" data-aid="'+res.data.menu_id+'" data-pid="'+res.data.pid+'" style="">';
                            html += '<a href="javascript:void(0);" class="nume-active" >';
                            html += '<span class="sub_pre_menu_inner">'+res.data.menu_name+'</span></a></li>';
                        _this.before(html)
                        if(items >= 5){
                            _this.find(".menu_add").remove();
                        }
                    }else{
                        _this.find("a").addClass("nume-active");
                    }
                    $("input[value='"+res.data.menu_event_type+"']").prop('checked',true);
                    $("input[name='menu_event_type']:checked").click();
                    $("#_menu_id").val(res.data.menu_id);
                    $("#field-menu-name").val(res.data.menu_name)
                    $("#menu_event_url").val(res.data.menu_event_url);
                    $("#wx-name-label").text(res.data.menu_name)
                    $(".submit-ajaxs").removeClass('disabled');
                    var options = res.data.options;
                    if(res.data.menu_event_type == 2 && options != undefined ){
                        $("input[value='"+options.type+"']").prop('checked',true);
                        $("._content").hide();
                        $(".content-"+options.type).show();
                        if(options.type == 'text'){
                            $('.simple-editor').summernote('code',options.content);
                        }else if(options.type == 'image'){
                            $("#c-image").val(options.image).trigger("change").trigger("validate");
                            $("#_media_id").val(options.media_id);
                        }else if(options.type == 'mpnews'){
                            $(".content-mpnews").html(res.data.html);
                        }
                    }   
                    if(res.data.menu_event_type == 3 && options != undefined ){
                        $("#_appid").val(options.appid);
                        $("#_path").val(options.path);
                        $("#_url").val(options.url);
                    }
                })

            })
            // 删除菜单
            $("body").on("click",".delete",function(){
                var _this = $(this);
                if(_this.hasClass("disabled")){
                    return false;
                }
                if(!confirm("确定删除吗?")){
                    return false;
                }
                var href = $("#_delNume").data('action') || '';
                if(href == null || href == ''){
                    return false;
                }
                var index = Layer.load(1);
                _this.addClass("disabled");
                $.get(href,function(res){
                    _this.removeClass("disabled");
                    Layer.close(index);
                    if(res.code != 1){
                        Fast.events.onAjaxError({msg:res.msg,code:0});
                        return false;
                    }else{
                        Fast.events.onAjaxSuccess(res,function(){
                            setTimeout(function(){
                                location.reload();
                            },3000)
                        });
                    }
                })
            })

            // 点击消息类型
            $("body").on("click","[name='menu_event_type']",function(){
                $(".menu-type").hide();
                $(".menu-type-"+$(this).val()).show()

            })
            // 选择类
            var appmsgType = 'text';
            $("body").on('click',"input[name='row[type]']",function(){
                if($(this).val() == appmsgType ){
                    if(appmsgType == 'mpnews'){
                        Fast.api.open($(this).data('href'),'选择图文')
                    }
                    return false;
                }
                appmsgType = $(this).val();
                $("._content").hide();
                $(".content-"+appmsgType).show();
                // 如果是图文
                if(appmsgType == 'mpnews'){
                    Fast.api.open($(this).data('href'),'选择图文')
                }
            })
            // 上传成功
            $("#faupload-image").data("upload-success", function(rest){
                $("#_media_id").val(rest.media_id)
            }); 

            $("body").on("click",".submit-ajax",function(){
                var _this = $(this)
                if(_this.hasClass('disabled')){
                    return false;
                }
                var url = '';
                var data = {};
                if(_this.data('form') != undefined && _this.data('form') != null){
                    url = $(_this.data('form')).attr('action')
                    data = $(_this.data('form')).serialize();
                }else{
                    url = _this.data('href');
                }
                _this.addClass('disabled')
                var larIndex = Layer.load(1);
                $.post(url,data,function(ret){
                    Layer.close(larIndex)
                    _this.removeClass('disabled');
                    if(ret.code == 0){
                        Toastr.error(ret.msg);
                        return ;
                    }else{
                        Toastr.success(ret.msg);
                        if(ret.url == "/reload"){
                            setTimeout(function(){
                                location.reload();
                            },2000)
                        }   
                    }
                })
                return false;
            })
            // 同步数据
            $("body").on('click',".submit-synch",function(){
                Fast.api.open($(this).data('href'),"同步数据");
            })
            Form.api.bindevent($("form[role=form]"));
        }
    };
    return Controller;
});
